//析构函数的定义
//C++中的类可以定义一个特殊的成员函数清理对象，这个特殊的成员函数叫做析构函数。
//语法：~类名() { 析构函数体 }
//析构函数没有参数也没有任何返回类型的声明
//析构函数在对象销毁时自动被编译器调用。
//析构函数的作用：释放堆内存，防止内存泄漏
#include <iostream>
#include <Cstdlib>
#include <Cstring>
using namespace std;

class Animal
{
public:
    //char name[32];
    char *name;
    int age;

    // 默认构造函数
    Animal()
    {
        cout << "构造函数Animal()" << endl;
        name = (char *)malloc(sizeof(char) * 32);
    }

    Animal(const char *name1)
    {
        int len;
        len = strlen(name1);
        name = (char *)malloc(sizeof(char) * len+1);
        strcpy(name, name1);
    }

    // 析构函数
    ~Animal()
    {
        cout << "析构函数~Animal()" << endl;
        if (name != NULL)
        {
            free(name); //释放指针所指向的堆内存
        }
    }
};

int main()
{
    Animal a;
    
    return 0;
}